package paint2.ui.ventanas;

import java.util.Set;
import paint2.infraestructura.RepositorioDeFiguras;
import paint2.modelo.Figura;
import paint2.ui.Menu;

public class VentanaGuardar implements Ventana {

    private final VentanaPrincipal ventanaPrincipal;
    private boolean guardar = true;

    public VentanaGuardar(VentanaPrincipal ventanaPrincipal) {
        this.ventanaPrincipal = ventanaPrincipal;
        this.guardar(ventanaPrincipal.obtenerFiguras());
    }

    public void agregar(Menu menu) {
        throw new UnsupportedOperationException("Not supported.");
    }

    private boolean elDibujoExiste(RepositorioDeFiguras repositorio, String nombreDeDibujo) {
        return repositorio.existe(nombreDeDibujo);
    }

    private void guardar(Set<Figura> figuras) {

        String nombreDeDibujo = Dialogo.pintarEscribible("Guardar", "Escriba el nombre del dibujo:");
        RepositorioDeFiguras repositorio = new RepositorioDeFiguras();
        siExisteElDibujaPreguntaParaReemplazarlo(repositorio, nombreDeDibujo);
        siNoExisteOReemplazaLoGuarda(repositorio, figuras, nombreDeDibujo);
    }

    private boolean permitimosElReemplazoDe(String nombreDeDibujo) {
        return Dialogo.pintarElegible("Reemplazar", "Desea reemplazar el dibujo " + nombreDeDibujo) == 1;
    }

    private void siNoExisteOReemplazaLoGuarda(RepositorioDeFiguras repositorio, Set<Figura> figuras, String nombreDeDibujo) {
        if (this.guardar) {
            repositorio.guardar(figuras, nombreDeDibujo);
        }
    }

    private void siExisteElDibujaPreguntaParaReemplazarlo(RepositorioDeFiguras repositorio, String nombreDeDibujo) {
        if (elDibujoExiste(repositorio, nombreDeDibujo)) {
            this.guardar = false;
            if (permitimosElReemplazoDe(nombreDeDibujo)) {
                repositorio.borrar(nombreDeDibujo);
                this.guardar = true;
            }
        }
    }
}
